// 该文件为封装具体的接口请求方法
// 引入自定义的axios函数
import request from '@/utils/request'

// 引入token(已不需要引入:util/request.js文件已添加了)
// import store from '@/store/index'

// registerAPI(this.regForm)
// registerAPI({
//   username: '', // 用户名
//   email: '', // 邮箱
//   password: '', // 密码
//   repassword: '' // 确认密码
// })
// (1).形参obj的值={username: '', email: '',password: '',repassword: ''}
// (2).结构赋值

// 1.导出注册-接口方法:
export const registerAPI = ({ username, password, repassword }) => {
  // 这里先用这个接口测试下, 如果url以http开头会忽略baseURL, axios直接请求此地址
  // Promise对象(内部包含原生的ajax请求)return出去到逻辑页面,去那边对Promise对象提取结果
  return request({
    url: '/api/reg',
    method: 'POST',
    data: {
      username,
      password,
      repassword
    }
  })
}
// 2.导出登录-接口方法:
export const loginAPI = ({ username, password }) => {
  // 这里先用这个接口测试下, 如果url以http开头会忽略baseURL, axios直接请求此地址
  // Promise对象(内部包含原生的ajax请求)return出去到逻辑页面,去那边对Promise对象提取结果
  return request({
    url: '/api/login',
    method: 'POST',
    data: {
      username,
      password
    }
  })
}
// 3.导出获取用户信息-接口方法:
export const getUserInfoAPI = () => {
  // 这里先用这个接口测试下, 如果url以http开头会忽略baseURL, axios直接请求此地址
  // Promise对象(内部包含原生的ajax请求)return出去到逻辑页面,去那边对Promise对象提取结果
  return request({
    url: '/my/userinfo',
    method: 'GET' // 不写默认是GET请求
    // 传参给后台: params(查询字符串query) data(请求体body) headers(请求体)
    // headers: {
    //   // this.$store.state.token 这里的this不是组件对象不能用
    //   Authorization: store.state.token
    // }
    // util/request.js文件已添加了请求过滤器所以不需要写headers
  })
}
// 4.导出获取侧边栏数据-接口方法:
export const getMenusListAPI = () => {
  // Promise对象(内部包含原生的ajax请求)return出去到逻辑页面,去那边对Promise对象提取结果
  return request({
    url: '/my/menus'
    // util/request.js文件已添加了请求过滤器所以不需要写headers
  })
}
// 5.导出更新用户信息数据-接口方法:
export const updateUserInfoAPI = ({ id, username, nickname, email, user_pic }) => {
  // Promise对象(内部包含原生的ajax请求)return出去到逻辑页面,去那边对Promise对象提取结果
  return request({
    url: '/my/userinfo',
    method: 'PUT',
    // util/request.js文件已添加了请求过滤器所以不需要写headers
    data: {
      id,
      username,
      nickname,
      email,
      user_pic
    }
  })
}
// 6.导出修改用户头像-接口方法:
export const updateUserAvatarAPI = (avatar) => {
  // Promise对象(内部包含原生的ajax请求)return出去到逻辑页面,去那边对Promise对象提取结果
  return request({
    url: '/my/update/avatar',
    method: 'PATCH',
    // util/request.js文件已添加了请求过滤器所以不需要写headers
    data: {
      avatar
    }
  })
}
// 7.导出重置密码-接口方法:
export const updatePwdAPI = ({ old_pwd, new_pwd, re_pwd }) => {
  // Promise对象(内部包含原生的ajax请求)return出去到逻辑页面,去那边对Promise对象提取结果
  return request({
    url: '/my/updatepwd',
    method: 'PATCH',
    // util/request.js文件已添加了请求过滤器所以不需要写headers
    data: {
      old_pwd,
      new_pwd,
      re_pwd
    }
  })
}
// 7.导出获取文章分类的-接口方法:
export const getArtCateListAPI = () => {
  // Promise对象(内部包含原生的ajax请求)return出去到逻辑页面,去那边对Promise对象提取结果
  return request({
    url: '/my/cate/list',
    method: 'GET'
    // util/request.js文件已添加了请求过滤器所以不需要写headers
  })
}
// 8.导出新建文章分类的-接口方法:
export const addArtCateAPI = ({ cate_name, cate_alias }) => {
  // Promise对象(内部包含原生的ajax请求)return出去到逻辑页面,去那边对Promise对象提取结果
  return request({
    url: '/my/cate/add',
    method: 'POST',
    // util/request.js文件已添加了请求过滤器所以不需要写headers
    data: {
      cate_name,
      cate_alias
    }
  })
}
// 9.导出更新文章分类的-接口方法:
export const updateArtCateAPI = ({ id, cate_name, cate_alias }) => {
  // Promise对象(内部包含原生的ajax请求)return出去到逻辑页面,去那边对Promise对象提取结果
  return request({
    url: '/my/cate/info',
    method: 'PUT',
    // util/request.js文件已添加了请求过滤器所以不需要写headers
    data: {
      id,
      cate_name,
      cate_alias
    }
  })
}
// 10.导出删除文章分类的-接口方法:
export const deleteArtCateAPI = (id) => {
  // Promise对象(内部包含原生的ajax请求)return出去到逻辑页面,去那边对Promise对象提取结果
  return request({
    url: '/my/cate/del',
    method: 'DELETE',
    // util/request.js文件已添加了请求过滤器所以不需要写headers
    params: {
      id
    }
  })
}
// 11.导出发布文章的-接口方法:
export const uploadArticleAPI = (obj) => {
  // Promise对象(内部包含原生的ajax请求)return出去到逻辑页面,去那边对Promise对象提取结果
  return request({
    url: '/my/article/add',
    method: 'POST',
    // util/request.js文件已添加了请求过滤器所以不需要写headers
    // data: {
    //   title,
    //   cate_id,
    //   content,
    //   cover_img,
    //   state
    // }
    data: obj
    // 上面的不能使用普通的对象,否则axios会把它转成JSON字符串在请求体里交给后台
    // 这个接口要求的是请求体是一个FormData类型(表单数据对象)携带文件给后台
  })
}
// 12.导出获取文章的-接口方法:
export const getArticleListAPI = ({ pagenum, pagesize, cate_id, state }) => {
  // Promise对象(内部包含原生的ajax请求)return出去到逻辑页面,去那边对Promise对象提取结果
  return request({
    url: '/my/article/list',
    method: 'GET',
    // util/request.js文件已添加了请求过滤器所以不需要写headers
    params: {
      pagenum,
      pagesize,
      cate_id,
      state
    }
  })
}
// 13.导出获取文章详情的-接口方法:
export const getArticleDetailFn = (id) => {
  // Promise对象(内部包含原生的ajax请求)return出去到逻辑页面,去那边对Promise对象提取结果
  return request({
    url: '/my/article/info',
    method: 'GET',
    // util/request.js文件已添加了请求过滤器所以不需要写headers
    params: {
      id
    }
  })
}
// 14.导出获取文章详情的-接口方法:
export const delArticleAPI = (id) => {
  // Promise对象(内部包含原生的ajax请求)return出去到逻辑页面,去那边对Promise对象提取结果
  return request({
    url: '/my/article/info',
    method: 'DELETE',
    // util/request.js文件已添加了请求过滤器所以不需要写headers
    params: {
      id
    }
  })
}
